Bidirectional forwarding detection or BFD is described in Internet Engineering Task Force (IETF) Requests For Comments (RFCs) 5880 [1], 7880 [2], and 7419 [3]. BFD provides a mechanism for rapid detection of communication failures between adjacent systems in order to establish alternative paths. Networks typically use relatively slow “hello” type procedures implemented in routing protocols to detect failures and establish alternate paths. One problem with such protocols is that the latency in detecting a link or a path failure is high, and such protocols implemented within routing protocols are not useful if the routing protocols themselves are not in use.
BFD is designed to detect failures between adjacent systems quickly. BFD operates independently of media, data protocols, and routing protocols. Thus, BFD avoids some of the difficulties associated with “hello” protocols that have high latency or are implemented within routing protocols and only useful when the routing protocols are implemented by both endpoints.
One problem with BFD implementations is that if there are multiple applications that need to monitor a network interface or link for liveness, then one BFD session is created for each application, and each BFD session sends and receives BFD control packets to detect liveness of the same interface/link. Such duplicate messaging could flood the network with unnecessary BFD control packets. In addition, processing resources on the computing platforms hosting the BFD session endpoints are also unnecessarily wasted.
In one example use case, one application establishes and uses a first BFD session to monitor connectivity with a remote node. The application may be a router or any other suitable application that executes on a computing platform and needs to maintain status information regarding a link. The first BFD session sends BFD control packets over the link to the remote node to monitor connectivity with the remote node.
A second application creates a second BFD session to monitor the same link to the same remote node as the first BFD session. The second BFD session also results in BFD control packets being sent over the link being monitored. Even though both applications are monitoring the same link to the same remote node, duplicate BFD control packets are being sent over the link, and such an implementation is inefficient for the reasons set forth above.
Accordingly, in light of these difficulties, there exists a need for methods, systems, and computer readable media for optimizing multiple BFD session behavior when the BFD sessions are monitoring connectivity with the same remote node over the same network interface or link.